package com.deer.wms.base.system.service.task;

import com.deer.wms.base.system.model.Rocket;
import com.deer.wms.base.system.model.task.*;
import com.deer.wms.base.system.model.zh.ShelfPlan;
import com.deer.wms.common.core.service.Service;

import java.util.List;

/**
 * 任务 服务层
 * 
 * @author guo
 * @date 2019-06-03
 */
public interface BillInTaskInfoService extends Service<BillInTaskInfo, Integer> {
	//晶棒查询
	List<Ingot>selectIngot(Ingot ingot);
	int getCellCountByShelf(Integer shelfId);
	/**
	 * 获得总明细数和已回执的数
	 * @return
	 */
	int getCountByBillIdAndReceipt(TaskInfoCriteria criteria);

	/**
	 *
	 *	根据出库单id查找出库单的所有任务信息
	 *
	 * @param billId
	 * @return
	 */
	public List<TaskInfo> selectTaskInfoByBillOutMasterId(Integer billId);


	/**
	 * 根据任务ID查询任务信息，便于更改状态值
	 *
	 * @param taskId
	 * @return
	 */
	public TaskInfo getTaskInfoByTaskId(String taskId);


	/**
	 *根据billInMasterId查询任务列表 入库完成，更新库存时查询
	 *
	 * @param
	 * @return
	 */
	public List<TaskInfoDto> selectTaskInfoByBillInMasterId(Integer billId);

	/***
	 *出库push到消息，更新库存时查询
	 * @param billId
	 * @author 李帅辰
	 * @date 2020/10/22 16:42
	 * @return java.util.List<com.deer.wms.base.system.model.task.TaskInfoDto>
	 */
	public List<TaskInfoDto> selectTaskInfoByBillOutId(Integer billId);
	/**
	 **入库强制完成时使用
	 * @author 李帅辰
	 * @date 2020/10/12 18:19
	 * @return com.deer.wms.base.system.model.task.TaskInfoDto
	 */
	public TaskInfoDto selectTaskInfoByid(Integer id);
	/**
	 * 查询状态值为0的任务，(为WCS提供接口)
	 *
	 * @return
	 */
	public List<TaskInfoWcs> selectTaskInfoForWcsByState();

	/**
	 * 查询任务信息
	 *
	 * @param id 任务ID
	 * @return 任务信息
	 */
	public TaskInfo selectTaskInfoById(Integer id);

	/**
	 * 查询任务列表
	 *
	 * @param taskInfo 任务信息
	 * @return 任务集合
	 */
	public List<TaskInfo> selectTaskInfoList(TaskInfo taskInfo);



	/**
	 * 新增任务
	 *
	 * @param taskInfo 任务信息
	 * @return 结果
	 */
	public int insertTaskInfo(TaskInfo taskInfo);



	/**
	 * 新增入库任务
	 *
	 * @param taskInfo 任务信息
	 * @return 结果
	 */
	public int insertBillInTaskInfo(TaskInfo taskInfo);


	/**
	 * 修改任务
	 *
	 * @param taskInfo 任务信息
	 * @return 结果
	 */
	public int updateTaskInfo(TaskInfo taskInfo);

	/**
	 * 修改入库作业组盘列表数据(维护)
	 * @param taskInfo
	 * @return
	 */
	public int updateZuPan(TaskInfo taskInfo);
	/**
	 * 删除任务
	 *
	 * @param id 任务ID
	 * @return 结果
	 */
	public int deleteTaskInfoById(Integer id);

	/**
	 * 批量删除任务
	 *
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteTaskInfoByIds(String ids);
	List<TaskInfoDto> findList(TaskInfoCriteria criteria);

	/***
	 *查询出库任务
	 * @param criteria
	 * @author 李帅辰
	 * @date 2020/9/30 10:21
	 * @return java.util.List<com.deer.wms.base.system.model.task.TaskInfoDto>
	 */
	List<TaskInfoDto> billOutfindList(TaskInfoCriteria criteria);

	/***
	 *查询入库任务
	 * @param criteria
	 * @author 李帅辰
	 * @date 2020/9/30 10:22
	 * @return java.util.List<com.deer.wms.base.system.model.task.TaskInfoDto>
	 */
	List<TaskInfoDto> billInFindList(TaskInfoCriteria criteria);

	TaskInfo findByItemCodeAndBatchAndExp(TaskInfoCriteria criteria);

	/**
	 * 根据billId查询
	 * @param billId
	 * @return
	 */
	public List<TaskInfo> selectTaskInfoBybillId(Integer billId);




	TaskInfo selectTaskInfoByTaskNumber(long taskNumber);


	TaskInfoDto getAllUpdateByTaskNumber(long taskNumber);


	TaskInfoDto selectTaskInfoByBoxCode(String boxCode);

	TaskInfo selectHaveOldTaskInfoByBoxCode(String boxCode);

	Rocket getMessAgeId(Integer id);

	boolean reSetCellInfo(TaskInfo taskInfo);

	TaskInfo selectByMaterialId(String materialId);

	/**
	 *通过晶棒编码查询晶棒任务信息
	 * @author 李帅辰
	 * @date 2021/6/8 15:45
	 * @return com.deer.wms.base.system.model.task.TaskInfoDto
	 */
	TaskInfoDto findBillInError(String materialId);

	/**
	 *晶棒作业任务查询
	 * @author 李帅辰
	 * @date 2021/6/9 14:54
	 * @return com.deer.wms.base.system.model.task.TaskInfoDto
	 */
	List<TaskInfoDto> findBillInErrorList(TaskInfoCriteria criteria);

	/*任务作业列表*/
	List<TaskInfoDto> findTaskInfoList(TaskInfoDto taskInfoDto);
}
